package com.xixibaby.core.dict;

import com.baomidou.mybatisplus.core.toolkit.support.SFunction;

import java.lang.reflect.Field;
import java.util.List;

/**
 * 字典工具
 * 基本上只有俩个操作
 * 1 后台根据值转文本
 * 2 前端需要一个列表
 *
 * 设计约定：
 * 1 父级节点code 必须等于 类名:字段名 然后全大写
 * 2 如果不是，则必须在字段上指定 @DickMapping 映射关系
 * 3 子节点code必须等于 父节点code_value
 *
 * @author tooomj
 */
public interface SuperDictTool{

    /**
     * 获取所有的选项
     * @param function 父节点
     * @return 父节点所有的子节点集合
     */
    <T> List<AdminDict> getList(SFunction<T, Object> function);

    /**
     *
     * @param function lambda类型的字段名称
     * @param value 值
     * @param <T> 泛型类
     * @return 对应的文本值
     */
    <T>  String getText(SFunction<T, Object> function, int value);

    String getText(Field function, int value);


    String getKey(Field field,boolean dict);

    <T> String getKey(SFunction<T, Object> function);
}
